<!DOCTYPE html>
<html>
<body>
<div id="console">Tests that event handler is called in correct world.<br></div>

<script id="isolatedScript0" type="isolated/world">
HTMLElement.prototype.world = "Isolated World 0";
function listener()
{
    log("in isoloated world 0: " + document.body.world);
}
document.body.addEventListener("MessageEvent", listener, false);
log("Sending from world 0...");
sendMessage();
</script>

<script id="isolatedScript1" type="isolated/world">
HTMLElement.prototype.world = "Isolated World 1";
log("Sending from world 1...");
sendMessage();
</script>

<script>
function log(message)
{
    document.getElementById("console").innerHTML += message + "<br>";
}

function sendMessage()
{
    var event = document.createEvent("MessageEvent");
    event.initMessageEvent("MessageEvent", false, false, "", location.url);
    document.body.dispatchEvent(event);
}

HTMLElement.prototype.world = "Main World";
function listener(evt)
{
    log("In main world: " + document.body.world);
}

document.body.addEventListener("MessageEvent", listener, false);

if (window.testRunner) {
    testRunner.dumpAsText();
    // setup common functions in worlds
    for (var world  = 0; world < 2; ++world) {
        var script = log.toString() + sendMessage.toString() + document.getElementById("isolatedScript" + world).innerHTML;
        testRunner.evaluateScriptInIsolatedWorld(world + 1, script);
    }
    log("Sending from main world...");
    sendMessage();
}
</script>
</body>
</html>
